有关「TensorFlow」的其他学习笔记系列:「TensorFlow」
Introduction
平时,大家自己的机器模型在训练期间(特别是深度网络),训练时间通常几小时到十几小时不等,甚至可能会花上好几天,那么在这段时间,你们又会干些什么事情呢?作为程序员,这里提供一个「有趣的」方式,用你的微信来监控你的模型在训练期间的一举一动。
大概的效果是:
程序用到的主角是 Python 中的微信个人号接口 itchat。What’s itchat? (itchat 的介绍及安装过程)
这次,我们要监控的模型是先前提到过的 基于 MNIST 手写体数据集的 CNN 模型 。
注意:
- 文章要求读者事先下载安装好 itchat。
- 文章不会详细介绍 TensorFlow 以及 Tensorboard 的知识。
Environment
OS: macOS Sierra 10.12.x
Python Version: 3.6.x
TensorFlow: 1.x
itchat: 1.2.x
Code
- Use WeChat to Monitor Your Network(tensorboard 绘图)
1 | # 基于 MNIST 数据集 的 「CNN」(tensorboard 绘图) |
大家可以看到,我对先前的代码进行了一些修改。
下面我会对代码中用到 itchat 的部分进行一些简短的说明。
- 代码部分截图:
说明:
- 首先我导入了 itchat 和 threading。
- 在原先所有
print
消息的地方,都添加了itchat.send()
来输出我们的模型训练日志。 - 加了一个带锁的状态量
running
用来做为发送微信消息的运行开关。 - 写了一个 itchat 的 handler(就是上图)。其作用就是当程序运行,我们需要在微信中,对自己的微信号发送「开始」,模型才会开始训练,为了防止信息阻塞,所以要用到
threading
将其放在另一个线程当中。在训练的过程中,如果我们觉得结果已到达我们自己的预期,可以微信发送「停止」来停止模型的训练过程。
另外,脚本刚开始运行时,程序会弹出一个包含二维码的图片,我们需要通过微信来扫描该二维码,来登陆微信并启动 itchat 的服务。
程序是包含了 Tensorboard 绘图的,所以等模型训练好,我们依然是可以通过 Tensorboard 来更加详细地查看我们模型的训练过程。
至此,我们就可以一边通过微信来监控我们的模型训练过程,一边与身边的朋友们谈笑风生了。
如果看过 itchat 那个连接的读者,可以了解到 itchat 同样是可以发送图片信息的,所以我们可以写额外的脚本在训练的过程中每隔 100 次迭代, plot 到目前为止 loss,acc 等指标的趋势图。在此,我就不再进行拓展了。
关于各个模块的作用,以及各个变量的意义,我在此就不再赘述了。
如果有读者对于 CNN 卷积神经网络有些陌生或者是遗忘,可以参考我的另外一篇文章 ♛「Machine Learning」CNN Introduction。
如果读者对 Tensorboard 有所遗忘,可以参考我的另一篇文章 ♣︎「TensorFlow」 Tensorboard。